package xfuzzy.xfhl.model.spec;

import xfuzzy.lang.Type;
import xfuzzy.lang.TypeFactory;
import xfuzzy.lang.Universe;


/**
 * Clase para crear un tipo de salida. Esta clase utiliza la factor�a de tipos (TypeFactory) para crearlos.
 * Operator Defuz FuzzyMean -> Function SINGLETON (XfhlOperSet.DefuzOperatorFuzzyMean). Operator Defuz WeightedFuzzyMean -> Function Gaussians (XfhlOperSet.DefuzOperatorWeightedFuzzyMean).
 * @author Sergio Cala Cordero, Septiembre 2009, Herramienta XFHL
 *
 */
public class XfhlOutputType {

	/**
	 * Funci�n est�tica que crea un tipo de salida
	 * @param type  Operator Defuz FuzzyMean -> Function SINGLETON (XfhlOperSet.DefuzOperatorFuzzyMean). Operator Defuz WeightedFuzzyMean -> Function Gaussians (XfhlOperSet.DefuzOperatorWeightedFuzzyMean).	 
	 * @param name  Nombre del tipo de salida.
	 * @param u     Universo del tipo de salida.
	 * @param mfs   N�mero de funciones de pertenencia.
	 * @return      el objeto de la case Type deseado.
	 */
				
	public static Type create(int type,String name,Universe u,int mfs)
	{
		Type result=new Type(name,u);		
		
		switch (type) {
		case XfhlOperSet.DefuzOperatorFuzzyMean:
			TypeFactory.createRandomSingletons(result, mfs);
			break;
		case XfhlOperSet.DefuzOperatorWeightedFuzzyMean:
			TypeFactory.createRandomBells(result, mfs);
			break;
		default:
			break;
		}
		return result;		
	}
	
}
